/**
 * 
 */
package org.lightcommons.orm;

import java.io.Serializable;
import java.util.List;
import java.util.Map;

/**
 * @author GL
 * 
 * @since 2007-11-15
 */
public interface Dao<T, ID extends Serializable> {
	T get(ID id);

	T deleteById(ID id);

	ID save(T entity);

	void update(T entity);

	void saveOrUpdate(T entity);

	T delete(T entity);

	List<T> findAll();

	Page<T> getPage(int pageIndex, int maxResults);
	
	Page<T> getPageByQuery(String query,int pageIndex,int maxResults,Object... values);
	
	Page<T> getPageByNamedQuery(String namedQuery,int pageIndex,int maxResults,Map<String,Object> values);
	
	Page<T> getPageByKeyWord(String inculdKeywords,String excludeKeywords,int pageIndex,int maxResults);
	
}
